home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1998 July
/
EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso
/
recent
/
palmlink.lha
/
PalmLink
/
examples
/
PalmTime.c
next >
Wrap
C/C++ Source or Header
|
1998-06-21
|
6KB
|
199 lines
/*********************************************************************
** **
** PalmTime -- Set Amiga or Pilot system time **
** **
*********************************************************************/
/*
** Copyright © 1998 Richard Körber -- All Rights Reserved
** E-Mail: shred@eratosthenes.starfleet.de
** URL: http://shredzone.home.pages.de
**
***************************************************************/
/*
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**
** The author (Richard Körber) reserves the right to revoke the
** GNU General Public License whenever he feels that it is necessary,
** especially when he found out that the licence has been abused,
** ignored or violated, and without prior notice.
**
** You must not use this source code to gain profit of any kind!
**
***************************************************************/
/*
** Compiles with SAS/C, e.g.
** sc PalmTime.c NOSTACKCHECK DATA=NEAR STRMER CPU=68060 OPT
*/
#include <stdio.h>
#include <string.h>
#include <clib/alib_protos.h>
#include <clib/exec_protos.h>
#include <clib/dos_protos.h>
#include <clib/utility_protos.h>
#include <clib/palmlink_protos.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/utility_pragmas.h>
#include <pragmas/palmlink_pragmas.h>
#include <exec/memory.h>
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <libraries/palmlink.h>
#define VERSIONSTR "0.2ß"
#define DATESTR "21.6.98"
#define COPYRIGHTSTR "1998"
#define EMAILSTR "shred@eratosthenes.starfleet.de"
#define URLSTR "http://shredzone.home.pages.de"
#define NORMAL "\2330m"
#define BOLD "\2331m"
#define ITALIC "\2333m"
#define UNDERLINE "\2334m"
#define MKTAG(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
static char ver[] = "$VER: PalmTime " VERSIONSTR " (" DATESTR ") " EMAILSTR;
static char titletxt[] = \
BOLD "PalmTime " VERSIONSTR " (C) " COPYRIGHTSTR " Richard Körber -- all rights reserved" NORMAL "\n"
BOLD " WARNING:" NORMAL " This is an early beta release. If you don't\n"
" know what this means, do " BOLD "NOT" NORMAL " use this program!\n\n";
static char helptxt[] = \
" " ITALIC "E-Mail: " NORMAL EMAILSTR "\n"
" " ITALIC "URL: " NORMAL URLSTR "\n\n"
ITALIC "Usage:" NORMAL "\n"
" DEVICE/K Serial device (\"serial.device\")\n"
" UNIT/K/N Serial unit (0)\n"
" MAXBAUD/K/N Maximum baud (28800)\n"
"\n";
struct Parameter
{
STRPTR device;
LONG *unit;
LONG *maxbaud;
}
param;
static char template[] = "SD=DEVICE/K,SU=UNIT/K/N,SB=MAXBAUD/K/N";
extern struct DOSBase *DOSBase;
struct Library *PalmlinkBase;
struct Library *UtilityBase;
APTR socket = NULL;
BOOL ignoreError = FALSE;
/*
** Open a connection to the Pilot
*/
int Connect(void)
{
LONG error;
if(socket) return(TRUE);
socket = PL_OpenSocketTags
(
PLTAG_ErrorPtr , &error,
PLTAG_SerialDevice , (param.device ? param.device : (unsigned char *)"serial.device"),
PLTAG_SerialUnit , (param.unit ? *param.unit : 0),
PLTAG_SerialMaxRate , (param.maxbaud ? *param.maxbaud : 28800),
TAG_DONE
);
if(socket)
{
Printf("Please press the HotSync button " ITALIC "now" NORMAL "\n");
return(PL_Accept(socket,10L));
}
else
{
Printf("** Socket error %ld\n",error);
}
return(FALSE);
}
/*
** Close all databases and disconnect
*/
void Disconnect(void)
{
if(!socket) return;
DLP_AddSyncLogEntry(socket,"-- AMIGA made it possible --\n");
DLP_EndOfSync(socket,0);
PL_CloseSocket(socket);
}
/*
** Show Pilot time
*/
void cmd_show(void)
{
struct DLP_SysTime time;
if(!Connect()) return;
if(!DLP_OpenConduit(socket)) return;
if(!DLP_GetSysTime(socket,&time))
{
PutStr("** Couldn't get time\n");
return;
}
Printf("%02ld.%02ld.%04ld %02ld:%02ld:%02ld\n",time.day,time.month,time.year,time.hour,time.minute,time.second);
}
/*
** MAIN PART
*/
int main(void)
{
struct RDArgs *args;
PutStr(titletxt);
if(args = (struct RDArgs *)ReadArgs(template,(LONG *)¶m,NULL))
{
if(UtilityBase = OpenLibrary("utility.library",36L))
{
if(PalmlinkBase = OpenLibrary("palmlink.library",0L))
{
cmd_show();
if(socket)
{
if(!ignoreError && (PL_LastError(socket)!=0))
Printf("** Socket error code %ld\n",PL_LastError(socket));
Disconnect();
}
CloseLibrary(PalmlinkBase);
}
else PutStr("** Couldn't open palmlink.library\n");
CloseLibrary(UtilityBase);
}
else PutStr("** Couldn't open utility.library\n");
FreeArgs(args);
}
else PutStr(helptxt);
return(0);
}
/********************************************************************/